home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / gfx / misc / phoon.lha / original / fullmoon.c < prev    next >
C/C++ Source or Header  |  1992-07-04  |  2KB  |  65 lines

  1. #ifndef lint
  2. static char rcsid[] =
  3.     "@(#) $Header: /src/X11/contrib/demos/xphoon/RCS/fullmoon.c,v 1.5 90/06/27 10:29:59 tim Exp $ (LBL)";
  4. #endif
  5.  
  6. /*
  7. ** Copyright (C) 1988 by Jef Poskanzer and Craig Leres.
  8. **
  9. ** Permission to use, copy, modify, and distribute this software and its
  10. ** documentation for any purpose and without fee is hereby granted, provided
  11. ** that the above copyright notice appear in all copies and that both that
  12. ** copyright notice and this permission notice appear in supporting
  13. ** documentation.  This software is provided "as is" without express or
  14. ** implied warranty.
  15. */
  16.  
  17. #include <X11/Xlib.h>
  18. #include <bigfullmoon.xbm>
  19. #define CENTER_X 800
  20. #define CENTER_Y 645
  21. #define RADIUS 378
  22.  
  23. checkbitmapsize(w, h)
  24.     int *w, *h;
  25. {
  26.     int minw, minh;
  27.     minw = ((CENTER_X + RADIUS + 7)/8 - (CENTER_X - RADIUS)/8) * 8;
  28.     minh = 2*RADIUS;
  29.     if (*w < minw) *w = minw;
  30.     if (*h < minh) *h = minh;
  31.     if (*w > bigfullmoon_width)  *w = bigfullmoon_width;
  32.     if (*h > bigfullmoon_height) *h = bigfullmoon_height;
  33. }
  34.  
  35. getbitmap(w, h, bits, cx, cy, r)
  36.     int w, h;
  37.     char *bits;
  38.     int *cx, *cy, *r;
  39. {
  40.     int bx, by;    /* origin of fullmoon bitmap in display coordinates */
  41.     int fl, dl;    /* length of scan line in bytes of fullmoon, display */
  42.     int fb;        /* useable bytes of image */
  43.     int y;        /* Current position in display bitmap */
  44.     char *fbp, *dbp;    /* Pointers to current bitmap position */
  45.  
  46.     dl = (w+7)/8;
  47.     fl = (bigfullmoon_width+7)/8;
  48.     fb = (bigfullmoon_width)/8;
  49.  
  50.     bx = (dl-fb)/2;
  51.     by = (h-bigfullmoon_height)/2;
  52.     if (h < 900) by -= 5;        /* center fullmoon vertically */
  53.  
  54.     *cx = CENTER_X+bx*8;
  55.     *cy = CENTER_Y+by;
  56.     *r = RADIUS;
  57.  
  58.     dbp = bits;
  59.     for (y=0; y<h; y++){
  60.         fbp = bigfullmoon_bits + (y-by)*fl - bx;
  61.         bcopy(fbp,dbp,dl);
  62.         dbp += dl;
  63.     }
  64. }
  65.